#include <iostream>
#include <boost/type_traits.hpp>
using namespace std;
using namespace boost;

template <bool B, class T = void>
struct my_enable_if_c {
    typedef T type;
};

template <class T>
struct my_enable_if_c<false, T> {
};

template <class Cond, class T = void>
struct my_enable_if :
    public my_enable_if_c<Cond::value, T> {
};


template<typename T>
T print(T x, typename my_enable_if<is_integral<T> >::type* =0)
{
    cout << "int :" << x << endl;
    return x;
}

int main()
{
    cout << "--- Start ---" << endl;
    print(12);
    //print("string");
    cout << "--- End ---" << endl;
    return 0;
}
